home *** CD-ROM | disk | FTP | other *** search
Java Source | 1997-02-12 | 3.1 KB | 142 lines |
- import java.applet.Applet;
- import java.awt.*;
-
- public class scroll extends Applet implements Runnable {
- SpriteControl sc;
- MediaTracker mt;
- Thread thread=null;
- int scr1, scr2;
- int chr=0;
- int bgwidth[] = { 160, 180 };
- int bgheight[] = { 120, 120 };
- int bgnum[] = { 14, 24 };
- public void init(){
- Image image;
- resize( 160, 120 );
- sc = new SpriteControl();
- // パターン数 キャラクタ2個 太い柱1個 細い柱1個
- // プレーン数 キャラクタ1枚
- sc.Create( 4, 1, 160, 120, this );
- mt = new MediaTracker( this );
- // キャラクタイメージ
- image = getImage( getDocumentBase(), "scroll/chr1.gif" );
- mt.addImage( image, 0 );
- sc.Define( 0, image );
- image = getImage( getDocumentBase(), "scroll/chr2.gif" );
- mt.addImage( image, 0 );
- sc.Define( 1, image );
- // 太い柱イメージ
- image = getImage( getDocumentBase(), "scroll/thick.gif" );
- mt.addImage( image, 0 );
- sc.Define( 2, image );
- // 細い柱イメージ
- image = getImage( getDocumentBase(), "scroll/thin.gif" );
- mt.addImage( image, 0 );
- sc.Define( 3, image );
- // 背景イメージ
- image = getImage( getDocumentBase(), "scroll/back.gif" );
- mt.addImage( image, 0 );
- sc.SetBGImage( image );
- int x, y, i=0;
- // バックグラウンド作成 太い柱14枚 細い柱24枚
- sc.CreateBackground( 2, bgwidth, bgheight, bgnum );
- // 太い柱のパターンをバックグラウンドに設定
- // 柱の間隔80
- for( y=0; y<7; y++ ){
- for( x=0; x<2; x++ ){
- sc.SetBGPattern( 0, x+y*2, x*80, y*16, 2 );
- }
- }
- i++;
- // 細い柱のパターンをバックグラウンドに設定
- // 柱の間隔60
- for( y=0; y<8; y++ ){
- for( x=0; x<3; x++ ){
- sc.SetBGPattern( 1, x+y*3, x*60, y*12, 3 );
- }
- }
- sc.Show();
- sc.BGShow();
- // バックグラウンドプレーン0を最前面に表示
- sc.SetBGPriority( 0, 0 );
- scr1 = 72;
- scr2 = 44;
- }
- public void update( Graphics g ){
- paint( g );
- }
- public void paint( Graphics g ){
- if( mt.checkID( 0 ) ){
- sc.Display( g, 0, 0, this );
- } else {
- g.drawString( "Loading...", 0, 12 );
- }
- }
- public void start(){
- if( thread==null ){
- thread = new Thread( this );
- thread.start();
- }
- }
- public void stop(){
- if( thread!=null ){
- thread.stop();
- thread = null;
- }
- }
- public void run(){
- try {
- mt.waitForID( 0 );
- } catch( InterruptedException e ){
- return;
- }
- while( true ){
- try {
- Thread.sleep( 100 );
- } catch( InterruptedException e ){
- break;
- }
- ScrollThick();
- MoveChar( 0 );
- ScrollThin();
- repaint();
- }
- }
- int MoveChar( int i ){
- int x, y, no = 0;
- // キャラクタアニメーション
- chr++;
- if( chr>=4 ) chr = 0;
- x = (160-32)/2;
- y = 73;
- switch( chr ){
- case 0: no = 0;
- break;
- case 1: x += 4;
- no = 0;
- break;
- case 2: y -= 4;
- no = 1;
- break;
- case 3: x -= 4;
- no = 1;
- }
- sc.Move( i++, x, y, no );
- return i;
- }
- void ScrollThick(){
- // 太い柱オフセット値加算
- scr1 += 4;
- if( scr1>=160 ) scr1 -= 80*2;
- // 太い柱スクロール
- sc.BGScroll( 0, scr1, 0 );
- }
- void ScrollThin(){
- // 細い柱オフセット値加算
- scr2 += 3;
- if( scr2>=160 ) scr2 -= 60*3;
- // 細い柱スクロール
- sc.BGScroll( 1, scr2, 0 );
- }
- }
-